﻿using FluentScheduler;

namespace NETCORE.FluentScheduler.Job
{
    /// <summary>
    /// 邮件同步服务注册者（任务执行的计划策略）
    /// </summary>
    public class EmailSyncJobRegistry : Registry
    {
        public EmailSyncJobRegistry()
        {
            //不允许重复执行（每一次任务都必须执行完成后，才能开启下一次执行，防止并发执行带来的问题）
            NonReentrantAsDefault();

            //每5秒一次循环
            Schedule<EmailSyncJob>().ToRunNow().AndEvery(5).Seconds();

            //每1小时一次循环
            //Schedule<EmailSyncJob>().ToRunNow().AndEvery(1).Hours();
        }
    }

    /// <summary>
    /// 邮件同步服务执行器（具体执行的任务）
    /// </summary>
    public class EmailSyncJob : IJob
    {
        public void Execute()
        {
            try
            {
                Console.WriteLine("开始邮件数据同步服务，{0}...", DateTime.Now);
            }
            catch (Exception ex)
            {
                Console.WriteLine("邮件同步服务出现异常{0}...", ex.ToString());
            }
            finally
            {
                Console.WriteLine("结束处理邮件同步服务...");
                Console.WriteLine(Environment.NewLine);

            }
        }
    }
}
